//2.泛型类
class Myarray<T>{//<T>类型形参列表
    private T[] arr=(T[]) new Object[10];

    public T get(int index){//返回类型是T，参数是下标
        return arr[index];
    }

    public void set(int index,T value){
        arr[index]=value;
    }
}

public class TestDemo2 {
    public static void main(String[] args) {
        Myarray<String> arr1=new Myarray<>();//怎么实例化泛型对象
        Myarray<Integer> arr2=new Myarray<>();
        //Myarray<int> arr3=new Myarray<>();error:int这种内置类型无法直接用为泛型对象的类型，因为基本数据类型不继承Object类
        //泛型都得是引用类型1，都继承了Object类

        Myarray<String> arr4=new Myarray<>();
        arr4.set(0,"hello");
        Myarray<Integer> arr5=new Myarray<>();
        arr5.set(0,100);
        //arr5.set(1,"hello");error:类型不匹配

        //通配符：?
        Myarray<?>arr6=arr1;//?可以指代任何类型
        //Myarray<? extends Number>arr7=arr1; error：arr1不是Number及其子类
        //可以用extends规定？的上界，super规定？的下界
        //Myarray<? super Number>arr7下界就是只能匹配到Number及其父类
    }
}
